﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;

namespace JasRibbonApplicatie.Classes
{
    public class Aanvraag
    {
        public int AanvraagId { get; set; }
        public Gebruiker Gebruiker { get; set; }
        public verenigingen Vereniging { get; set; }
        public evenement Evenement { get; set; }
        public Magazijnier MagazijnierAfhaling { get; set; }
        public Magazijnier MagazijnierInlevering { get; set; }
        public DateTime? GeplandeAfhaling { get; set; }
        public DateTime? GeplandeInlevering { get; set; }
        public List<MateriaalBestelling> BesteldeMateriaal
        {
            get;
            set;
        }
        public Statussen Status
        {
            get {
                return this._status;
            }
            set {
                _status = value;
                switch (_status)
                {
                    case Statussen.ongeldig:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_06.png";
                        break;
                    case Statussen.afgekeurd:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_01.png";
                        break;
                    case Statussen.nieuw:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_02.png";
                        break;
                    case Statussen.goedgekeurd:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_03.png";
                        break;
                    case Statussen.behandeld:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_04.png";
                        break;
                    case Statussen.verstreken:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_05.png";
                        break;
                    default:
                        StatusAfbeelding = "/JasRibbonApplicatie;component/Images/statussen/status_06.png";
                        break;
                }
                Queries.UpdateAanvraagStatus(this.AanvraagId, _status);
            }
        }      
        public string StatusAfbeelding {
            get {
                return statusAfbeelding;
            }
            private set
            {
                statusAfbeelding = value;
            }
        }

        private Statussen _status = Statussen.ongeldig;
        public enum Statussen {
            ongeldig = 0,
            afgekeurd = 1,
            nieuw = 2,
            goedgekeurd = 3,
            behandeld =4,
            verstreken=5
        }
        private string statusAfbeelding;


        public Aanvraag(int id, verenigingen vereniging, evenement ev, Gebruiker gebruiker,
                        Magazijnier mag1, Magazijnier mag2,
                        DateTime? geplandeafhaling, DateTime? geplandeinlevering,
                        int status)
        {
            AanvraagId = id;
            Vereniging = vereniging;
            Evenement = ev;
            MagazijnierAfhaling = mag1;
            MagazijnierInlevering = mag2;
            GeplandeAfhaling = geplandeafhaling;
            GeplandeInlevering = geplandeinlevering;
            Gebruiker = gebruiker;
            Status = (Statussen) status;
            LoadBesteldeMateriaal();
        }

        public void SaveBesteldeMateriaal(){
            Queries.SetMaterialenForAanvraagId(this.BesteldeMateriaal);
            LoadBesteldeMateriaal();
        }
        public void LoadBesteldeMateriaal()
        {
            BesteldeMateriaal = Queries.GetMateriaalBestellingenByAanvraagId(AanvraagId);
        }
    }
}
